package lianxi;

/**
 * 5 有一对兔子，从出生后第3个月起每个月都生-对兔子，小兔子长到第三个月后每个月又生一对兔子，假如兔子都不死，问每个月的兔子总数为多少?
 * 
 * @author lenovo
 * @date 2020年7月30日 @time 上午9:57:35
 */
public class _05_ {

	public static void main(String[] args) {
		int sum = 12;
		System.out.println(rabbit(sum));
	}

	/**
	 * 思路 : 把一对看成一只
	 * 
	 * 第一月 : 老兔子有一对,以下都是按一只算,最后返回值乘2
	 * 
	 * 第二月 : 老兔子有一只
	 * 
	 * 第三月 : 老兔子有一只 新兔子一只 共 2 只 一只老兔子生一只新兔子
	 * 
	 * 第四月 : 老兔子有一只 长了一个月的兔子一只 新兔子 一只 共 3 只 一只老兔子生一只新兔子
	 * 
	 * 第五月 : 老兔子有2只 长了一个月的兔子一只 新兔子 2只 共 5 只 2只老兔子生2只新兔子
	 * 
	 * 第六月 : 老兔子有3(2+1)只 长了一个月的兔子2只 新兔子 3只 共 8 只 3只老兔子生3只新兔子
	 * 
	 * 第7月 : 老兔子有5(3+2)只 长了一个月的兔子3只 新兔子 5只 共 13 只 5只老兔子生5只新兔子
	 * 
	 * 
	 * 兔子总数符合斐波那契数列,调用一个方法,返回数值即可
	 * 
	 * @param num
	 * @return
	 */
	public static int rabbit(int num) {
		if (num <= 2) {
			// 1月 2月 只有一对
			return 2;
		} else {
			int a1 = 1;
			int a2 = 1;
			int a3 = 0;
			for (int i = 2; i < num; i++) {
				a3 = a1 + a2;
				a1 = a2;
				a2 = a3;
			}
			// 乘2
			return a3 * 2;
		}
	}
}
